/*
 * 导出Excel字段设置
 * 使用方法：
 *    new App.ExportColumnSettingWin({grid:this.gridxxx, cid:'xxx'}).show();
 * 需要传入grid对象, 和cid（一个id字符串）
 * 可以传入Window构造参数，比如高度、宽度、标题等
 */
Ext.define('Ext.ux.ExportColumnSettingWin', {
	extend: 'Ext.window.Window',
	xtype: 'exportsetting',
	
	// 构造函数
	constructor : function(_cfg) {
		Ext.applyIf(this, _cfg);
		this.grid = _cfg.grid; 	// 属性
		this.cid = _cfg.cid;	// checkbox的id前缀
		// 必须先初始化组件
		this.initUIComponents();
		var def = {
					layout : 'fit',
					items : this.formPanel,
					modal : true,
					height : _cfg.height || 300,
					width : _cfg.width || 620,
					maximizable : true,
					title : _cfg.title || '设置导出字段',
					buttonAlign : 'center',
					buttons : [{
								text : '确定',
								iconCls : 'btn-save',
								scope : this,
								handler : this.setok
							}, {
								text : '关闭',
								iconCls : 'btn-cancel',
								scope : this,
								handler : this.cancel
							}]
		}
		this.callParent([def]);
	},// end of the constructor

	// 初始化组件
	initUIComponents : function() {
		//生成checkbox选项
		this.getItems = function() {
			var items = [];
			var cols = this.grid.columns;
			var index = 0;
			for (var i = 0; i < cols.length; i++) {
				// 将isExp=false字段读出来, 加上全选和全不选, 如果全为空提示至少选择一个 []
				if (cols[i].dataIndex && cols[i].hideable!=false) {
					var obj = {
						name : cols[i].dataIndex,
						checked : cols[i].isExp != false,
						boxLabel : cols[i].text
					};
					obj.id = this.cid + '_id_' + index++;
					items.push(obj);
				}
			}
			return items;
		};
		//checkbox面板
		this.checkboxSet = new Ext.form.FieldSet({
					layout : {
						type: 'table',
						columns : 3
					},
					title: '请选择要导出的字段',
					labelWidth : 40,
					defaults : {
						xtype : 'checkbox',
						anchor : '95%',
						width: '100%'
					},
					items : this.getItems()
				});
		//form表单元素
		this.formPanel = new Ext.form.Panel({
			bodyStyle : 'padding:10px',
			autoScroll : true,
			items : [this.checkboxSet]

		});

	},// end of the initcomponents

	cancel : function() {
		this.close();
	},
		
	setok : function() {
		// 获得表单元素的值
		var map = this.formPanel.getForm().getValues();
		// 传入grid
		var cols = this.grid.columns;
		var cnt = 0;
		for (var i = 0; i < cols.length; i++) {
			if (cols[i].dataIndex) {
				if (map[cols[i].dataIndex]) {
					cols[i].isExp = true;
					cnt++;
				} else {
					cols[i].isExp = false;
				}
			}
		}
		if (cnt == 0) {
			Ext.ux.Toast.msg('操作失败', '导出字段至少保留一个！');
		} else {
			Ext.ux.Toast.msg('操作信息', '操作成功！');
		}
		this.close();
	}
	
});
